#ifndef LINEAR_TABLE_H
#define LINEAR_TABLE_H

#include "element.h"
#include "status.h"

//动态分配内存的选项
#define LIST_INIT_SIZE 100  //线性表存储空间初始分配量
#define LIST_INCREMENT 10   //线性表存储空间的分配增量
typedef struct{
    ElemType *elem; //存储空间基址
    int length;     //当前长度
    int listSize;   //当前分配的存储容量，以sizeof(ElemType)为单位
}SqList;    //sequential list

//线性表的链表实现
typedef struct Lnode{
    ElemType        data;
    struct LNode    * next;
}Lnode, *LinkList ;

/**
 * @brief 初始化线性表，使用连续地址实现
 * 
 * @param L 线性表的引用
 * @return Status 
 */
Status InitList_Sq(SqList & L);

/**
 * @brief 根据序号寻找元素值中的位置
 * 
 * @param L 链表地址
 * @param i 元素的序数。从1开始。
 * @param e 找到的元素
 * @return Status 找到了返回OK
 */
Status GetElem_L(LinkList L,int i,ElemType &e);

#endif // !LINEAR_TABLE_H
